package com.sunfeng.one;

import com.rabbitmq.client.*;

import util.ConnectionUtil;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @Auther: Administrator
 * @Date: 2019/2/26 10:43
 * @Description:
 */
public class RabbitProducer {

    private static final String EXCHANGE_NAME = "exchange_hello";
    private static final String ROUTING_KEY = "routingkey_hello";
    private static final String QUEUE_NAME = "hello";


    public static void main(String[] args) throws IOException, TimeoutException {
        final Channel channel = ConnectionUtil.getChannel();
        // 创建一个 type="direct" 、持久化的、非自动删除的交换器
        channel.exchangeDeclare(EXCHANGE_NAME, "direct", true, false, null);
        /**
         * 生成一个队列
         * 1、队列名称
         * 2、队列里面的消息是否持久化（磁盘）默认情况下消息是存储在内存中
         * 3、该队列是否只提供一个消费者进行消费 是否进行消息共享 true 可以多个消费者消费 false 只能一个消费者消费
         * 4、是否自动删除 最后一个消费者端断开链接以后 该队列是否自动删除 true 自动删除 false 不自动删除
         * 5、其他参数
         */
        channel.queueDeclare(QUEUE_NAME, true, false, false, null);

        //将交换器与队列通过路由键绑定   这里是绑定键
        channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY);
        //发送一条持久化的消息: hello world !
        String message = "Hello World!";
        /**
         * 1、交换机名称
         * 2、路由键名称
         * 3、其他参数设置
         * 4、消息体
         */

        for (int i = 0; i < 10; i++) {
            channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());
        }
        System.out.println("消息发送成功");
        channel.close();

    }
}
